Memory-based attacks on computing systems are a growing concern. Due to a lack of confidentiality, integrity, and rollback protection, a wide range of attacks are possible to steal valuable data (particularly when stored in a memory) and gain control of a system. Existing solutions either provide partial protection in an effort to decrease performance overheads or provide more robust protection, but with high performance and storage overheads, which make such techniques unsuitable for widespread adoption.